<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URI Routing : CodeIgniter User Guide</title>

<style type='text/css' media='all'>@import url('../userguide.css');</style>
<link rel='stylesheet' type='text/css' media='all' href='../userguide.css' />

<script type="text/javascript" src="../nav/nav.js"></script>
<script type="text/javascript" src="../nav/prototype.lite.js"></script>
<script type="text/javascript" src="../nav/moo.fx.js"></script>
<script type="text/javascript" src="../nav/user_guide_menu.js"></script>

<meta http-equiv='expires' content='-1' />
<meta http-equiv= 'pragma' content='no-cache' />
<meta name='robots' content='all' />
<meta name='author' content='ExpressionEngine Dev Team' />
<meta name='description' content='CodeIgniter User Guide' />

</head>
<body>

<!-- START NAVIGATION -->
<div id="nav"><div id="nav_inner"><script type="text/javascript">create_menu('../');</script></div></div>
<div id="nav2"><a name="top"></a><a href="javascript:void(0);" onclick="myHeight.toggle();"><img src="../images/nav_toggle_darker.jpg" width="154" height="43" border="0" title="Toggle Table of Contents" alt="Toggle Table of Contents" /></a></div>
<div id="masthead">
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td><h1>CodeIgniter User Guide Version 2.1.0</h1></td>
<td id="breadcrumb_right"><a href="../toc.html">Table of Contents Page</a></td>
</tr>
</table>
</div>
<!-- END NAVIGATION -->


<!-- START BREADCRUMB -->
<table cellpadding="0" cellspacing="0" border="0" style="width:100%">
<tr>
<td id="breadcrumb">
<a href="http://codeigniter.com/">CodeIgniter Home</a> &nbsp;&#8250;&nbsp;
<a href="../index.html">User Guide Home</a> &nbsp;&#8250;&nbsp;
URI Routing
</td>
<td id="searchbox"><form method="get" action="http://www.google.com/search"><input type="hidden" name="as_sitesearch" id="as_sitesearch" value="codeigniter-kr.org/user_guide_2.1.0/" />Search User Guide&nbsp; <input type="text" class="input" style="width:200px;" name="q" id="q" size="31" maxlength="255" value="" />&nbsp;<input type="submit" class="submit" name="sa" value="Go" /></form></td>
</tr>
</table>
<!-- END BREADCRUMB -->

<br clear="all" />


<!-- START CONTENT -->
<div id="content">

<h1>URI 라우팅 규칙 Routing</h1>

<p>일반적으로 URL 문자열과 클래스/함수 간에는 1대1 관계를 이룹니다</p>
<p>URL 의 세그먼트는 통상 다음의 형태를 따릅니다:</p>
<code>example.com/<dfn>class</dfn>/<samp>function</samp>/<var>id</var>/</code>

<p>그러나 어떤 경우에는 위와같은 1대1 매칭 대신 다른 클래스 나 함수를 호출하고자 할때도 있을것입니다.</p>
<p>예를들어 여러분은 아래와 같은 형식의 URL 을 원한다고 합시다:</p>

<p>
example.com/product/1/<br />
example.com/product/2/<br />
example.com/product/3/<br />
example.com/product/4/
</p>

<p>일반적으로 두번째 새그먼트는 함수이름이 되어야하나 , 위의 예에서는 함수이름대신 제품 ID 입니다.</p>
<p>이렇게 하려면 CodeIgniter 의 재매핑(remap) 기능을 사용하시면 됩니다. </p>
<h2>나만의 라우팅 규칙 설정하기</h2>

<p>라우팅 규칙은 <var>application/config/routes.php</var> 파일에 정의되어있습니다.해당파일을 보시면 <dfn>$route</dfn> 배열이 있는데 그 배열을 통해 여러분만의 라우팅 규칙을 설정할 수 있습니다.라우팅은 <dfn>와일드카드(*)</dfn> 나 <dfn>정규표현식 으로도 설정할 수 있습니다. </dfn></p>


<h2>와일드 카드(*)</h2>

<p>일반적인 와일드 카드 라우팅은 아래와 같이 설정합니다:</p>

<code>$route['product/:num'] = "catalog/product_lookup";</code>

<p>라우팅 설정에서 배열의 키는 호출될 URI 를 나타내며, 배열의 값은 매핑될 도착지(실제로 사용자에게 보여질 URI)를 나타냅니다. </p>
<p>위 예제에서 요청되는 URL 의 첫번째 새그먼트가 "product"이고 두번째 새그먼트가 숫자 가 됩니다. 이런 URL 요청이 들어오면 자동으로 catalog 클래스의 product_lookup 함수가 호출됩니다. </p>
<p>라우팅에서 사용할수 있는 와일드 카드는 아래와같이 두가지(숫자,모든것)입니다.:</p>
  <p><strong>(:num)</strong> 숫자로만 구성된 세그먼트와 일치합니다.<br />
    <strong>(:any)</strong> 모든 문자와 일치합니다.
  <p class="important"><strong>Note:</strong> 라우팅 설정은 상위에 설정된것이 하위에 설정된것보다 우선실행됩니다.</p>

<h2>예제</h2>

<p>여기 몇몇 라우팅 예제가 있습니다:</p>

<code>$route['journals'] = "blogs";</code>
<p> URL 이 첫번째 새그먼트로 "journals" 을 가지고있다면 "blogs" 클래스로 재매핑 됩니다. </p>

<code>$route['blog/joe'] = "blogs/users/34";</code>
<p> URL 이 blog/joe 와같은 새그먼트를 포함하고 있다면 "blogs" 클래스의 "users" 함수로 재미핑되며  ID 값으로 "34" 가 설정됩니다.</p>

<code>$route['product/(:any)'] = "catalog/product_lookup";</code>
  <p> URL 이 첫 새그먼트로 "product"를 포함하고 있고 두번째 세그먼트가 숫자라면"catalog" 클래스의 "product_lookup"
    함수로 재매핑 됩니다.</p>

  <code>$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";</code>
  <p> URL 이 첫 새그먼트로 "product" 를 포함하고 있고 두번째 세그먼트가 숫자라면"catalog" 클래스의"product_lookup_by_id"
    함수로 연결되며 두번째 새그먼트는 변수로서 함수에 전달돌것입니다.</p>

<p class="important"><strong>Important:</strong> Do not use leading/trailing slashes.</p>

<h2>정규표현식 </h2>

<p>라우팅 규칙을 설정하는데 정규표현식을 사용하고싶다면 가능합니다</p>
<p>어떤 정규표현식도 후위참조(back-references)로서 사용가능합니다 </p>
<p class="important"><strong>Note:</strong>&nbsp; 후위참조(back-references)를 사용하실때는 이중 백슬래쉬(\\)대신 달러($)를 사용해야합니다..</p>

<p>정규표현식 경로설정은 일반적으로 다음의 형태를 가집니다:</p>

<code>$route['products/([a-z]+)/(\d+)'] = "$1/id_$2";</code>

<p>위 예제에서는, <dfn>products/shirts/123</dfn> 같은 경로가 <dfn>shirts</dfn> 컨트롤러의 <dfn>id_123</dfn> 함수로 매핑될 것입니다.</p>

<p>또한,와일드 카드 및 정규표현식경로를 섞어 쓸수있습니다.</p>

<h2>예약된 라우팅 경로 (Reserved Routes)</h2>

<p>예약된 경로는 두가지가 있습니다:</p>

<code>$route['default_controller'] = 'welcome';</code>

<p>위 라우팅 경로는 URI 가 아무런 데이터도 포함하지않았을때 어떤 컨트롤러가 로드 될지 나타냅니다. 루트경로를 호출했을경우가 이에 해당합니다.</p>
<p>위 예제의 경우 welcome 클래스가 로드될것입니다. 항상 기본 라우팅경로를 설정해둘것을 권장합니다. 그렇지않으면 404 에러페이지를 기본으로 내보낼테니까요.</p>
  <code>$route['404_override'] = '';</code></p>
  <p>이 라우팅 경로는 요청된 컨트롤러가 없으면 어떤 컨트롤러를 불러야 여부를 지정하는 것입니다. 이 설정은 기본 설정된 404 페이지를
    덮어 씁니다. <var>application/errors/error_404.php</var> 의 기본 <dfn>error_404.php</dfn>
    파일을 로드하는 <samp>show_404()</samp> 함수에는 영향을주지 않습니다.</p>
  <p>&nbsp;</p>

<p class="important"><strong>Important:</strong>&nbsp; 예약된경로는 어떤 와일드카드,정규표현식 경로보다 앞에 와야합니다..</p>

</div>
<!-- END CONTENT -->


<div id="footer">
<p>
Previous Topic:&nbsp;&nbsp;<a href="common_functions.html">Common Functions</a>
&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="#top">Top of Page</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
<a href="../index.html">User Guide Home</a>&nbsp;&nbsp;&nbsp;&middot;&nbsp;&nbsp;
Next Topic:&nbsp;&nbsp;<a href="errors.html">Error Handling</a>
</p>
<p><a href="http://codeigniter.com">CodeIgniter</a> &nbsp;&middot;&nbsp; Copyright &#169; 2006 - 2011 &nbsp;&middot;&nbsp; <a href="http://ellislab.com/">Ellislab, Inc.</a></p>
</div>

</body>
</html>